package ig.metrica.ui.unidadsubcuenta;

import ig.metrica.origenesdedatos.*;
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.Properties;
import java.util.StringTokenizer;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.swing.JInternalFrame;
import javax.swing.JOptionPane;

import ig.metrica.ui.ModeloTablaBusquedaSevinpro;
import ig.metrica.ui.PantallaBusquedaSevinproPanel;
import ig.metrica.ui.WizzardSevinproPanel;
import ig.util.ConexionServer;
import ig.util.ejb.IGBean;
import ig.util.ejb.IGLlaveInt;
import java.util.*;

public class PantallaBusquedaUnidad extends PantallaBusquedaSevinproPanel {

    private PantallaDatosBasicosUnidad panel;
    private WizzardSevinproPanel wizzard;
    private Object[] llaveVO = new Object[1];
    private String[] titulos;
    private ArrayList datos;
    //private FormatounidadsubcuentaBMPHome home;
    private InitialContext ctx = null;
    private Properties prop = new Properties();
    /*
     * {
     * prop.put(Context.INITIAL_CONTEXT_FACTORY, IGBean.INITIAL_CONTEXT_FACTORY
     * ); String Sockec = new ConexionServer().getSocketServer(); prop.put(
     * Context.PROVIDER_URL, Sockec); try { ctx = new InitialContext(prop); home
     * =
     * (FormatounidadsubcuentaBMPHome)ctx.lookup("ig.metrica.origenesdedatos.FormatounidadsubcuentaBMP");
     * } catch (Exception e) { JOptionPane.showMessageDialog(null, "Error
     * tratando de Ubicar Servicio"); }
	}
     */

    public PantallaBusquedaUnidad(PantallaDatosBasicosUnidad panel, WizzardSevinproPanel wizzard) {
        super(panel, wizzard, new ModeloTablaResultadoBusquedaUnidad(new String[]{"Id-Formato", "Unidad de Captura", "Subcuenta", "Descripcion"}, new ArrayList()));
        this.wizzard = wizzard;
        this.panel = panel;
        this.datos = new ArrayList();
        ((ModeloTablaResultadoBusquedaUnidad) tabla.getModel()).setDatos(datos);
    }

    protected final void accionSeleccionar() {
        int fila = tabla.getSelectedRow();
        if (fila != -1) {
            Object[] registro = (Object[]) datos.get(fila);
            try {
                llaveVO[0] = new FormatounidadsubcuentaBMPPK(Integer.parseInt(registro[0].toString()), registro[1].toString(), registro[2].toString(), (String)registro[3]);
                wizzard.setKey(llaveVO);
            } catch (Exception e) {
                JOptionPane.showMessageDialog(null, "Error!\n" + e.getMessage());
            }
            try {
                ((JInternalFrame) this.getParent().getParent().getParent().getParent()).dispose();
            } catch (Exception e) {
                this.getParent().getParent().getParent().getParent().setVisible(false);
            }

        } else {
            //JOptionPane.showInternalMessageDialog( this, "Debe escoger un registro de la tabla." );                    
            JOptionPane.showMessageDialog(this, "Debe escoger un registro de la tabla.", "Mensaje", JOptionPane.OK_CANCEL_OPTION);
        }
    }

    protected void accionBuscar() {
        datos = new ArrayList();
        try {
            StringTokenizer mCod = new StringTokenizer(panel.getFormato().trim(), "-");
            int mIdFormato = Integer.parseInt(mCod.nextToken());
            List resultado = new FormatounidadsubcuentaBMPBean().ejbFindByPropiedades(mIdFormato, panel.getUnidad(), panel.getSubcuenta(), panel.getDescripcion());

            Iterator i = resultado.iterator();
            //String a=new String(null);
            while (i.hasNext()) {
                FormatounidadsubcuentaBMPPK conexion = (FormatounidadsubcuentaBMPPK) i.next();
                Object[] registro = new Object[4];
                registro[0] = conexion.getIdformato();
                registro[1] = conexion.getUnidaddecaptura().toString();
                registro[2] = new String(conexion.getSubcuenta());
                if (conexion.getDescripcion() != null) {
                    registro[3] = new String(conexion.getDescripcion());
                }
                datos.add(registro);
            }
        } catch (Exception e) {
            JOptionPane.showMessageDialog(this, "Error:" + e.toString(), "Mensaje", JOptionPane.OK_CANCEL_OPTION);
            e.printStackTrace();
        }

        ((ModeloTablaResultadoBusquedaUnidad) tabla.getModel()).setDatos(datos);
        //((AbstractTableModel)tabla.getModel()).fireTableDataChanged();

    }
}
